/**
 * @autor my
 * 2017/8/29.
 */
public class QuickSort {
    public static void quickSortToDate(RandomDate[] randomDate, int start, int end) {
       /* 用快速排序对日期的时间进行升序排序，比如 1988-1-21 12:33:22 就会排在 1978-4-21 19:07:23 前面，
        因为它的时间更小，虽然日期更大*/
        if (start < end) {
            RandomDate base = randomDate[start]; // 选定的基准值（第一个数值作为基准值）
            RandomDate temp; // 记录临时中间值
            int i = start, j = end;
            do {
                //在左边找一个比基数大，右边找一个比基数小的randomDate,如果hour相等，那么就比较minute，
                // 如果munute相等，那么就比较second
                while ((randomDate[i].getHour() < base.getHour()) && (i < end)){
                    i++;}
                if (randomDate[i].getHour() == base.getHour()){
                    while ((randomDate[i].getMinute() < base.getMinute()) && (i < end)){
                        i++;
                    }
                    if (randomDate[i].getMinute() == base.getMinute()){
                        while ((randomDate[i].getSecond() < base.getSecond()) && (i < end)) {
                            i++;
                        }
                    }
                }

                while ((randomDate[j].getHour() > base.getHour()) && (j > start)) {
                    j--;
                }
                if (randomDate[j].getHour() == base.getHour()){
                    while ((randomDate[j].getMinute() > base.getMinute()) && (j >start)) {
                        j--;
                    }
                    if (randomDate[j].getMinute() == base.getMinute()){
                        while ((randomDate[j].getSecond() > base.getSecond()) && (j >start)) {
                            j--;
                        }
                    }
                }
               //找到后交换位置
                if (i <= j) {
                    temp = randomDate[i];
                    randomDate[i] = randomDate[j];
                    randomDate[j] = temp;
                    i++;
                    j--;
                }
            } while (i <= j);
            if (start < j)
                quickSortToDate(randomDate, start, j);
            if (end > i)
                quickSortToDate(randomDate, i, end);
        }
    }
}
